package com.liruo.learn.spring.mvc.config.mvc;

import com.liruo.learn.spring.mvc.enumconverter.*;
import org.springframework.format.FormatterRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * @Author:liruo
 * @Date:2023-02-19-14:46:53
 * @Desc
 */
//@Configuration
public class ConverterConfig implements WebMvcConfigurer {
    /**
     * Converter是一般工具，可以将一种类型转换成另一种类型。例如，将String转换成Date，
     * 或者将Long转换成Date。Converter既可以用在web层，也可以用在其它层中。
     *
     * Formatter只能将String转成成另一种java类型。例如，将String转换成Date，但它不能将Long转换成Date。
     * 所以，Formatter适用于web层。为此，在Spring MVC应用程序中，选择Formatter比选择Converter更合适。
     */
    @Override
    public void addFormatters(FormatterRegistry registry) {
//        registry.addConverter(new IntToGenderEnumConverter());
//        registry.addConverter(new StringToGenderEnumConverter());

        registry.addConverter(new EnumToIntConverter());
        registry.addConverter(new EnumToStrConverter());
        registry.addConverterFactory(new IntToEnumConverterFactory());
        registry.addConverterFactory(new StrToEnumConverterFactory());
        registry.addConverter(new SourceToEnumGenericConverter());
    }

}
